package com.xwltz.core.utils;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
 * @description DateUtils
 * @information on version 1.0 be created by @xwltz at 2022/5/9 14:54
 */

@SuppressWarnings("unused")
public class DateUtils extends DateUtil {

	/**
	 * CST时间转常规时间
	 *
	 * @param date CST时间字符串
	 * @return 常规时间字符串
	 */
	public static String cst2DateStr(String date) {
		return cst2DateStr(date, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * CST时间转常规时间
	 *
	 * @param date    CST时间字符串
	 * @param pattern 时间格式
	 * @return 常规时间字符串
	 */
	public static String cst2DateStr(String date, String pattern) {
		if (date == null || pattern == null) {
			return null;
		}
		Date formDate = cst2Date(date);
		return new SimpleDateFormat(pattern, Locale.CHINA).format(formDate);
	}

	/**
	 * CST时间转常规时间
	 *
	 * @param date CST时间字符串
	 * @return 常规时间类型
	 */
	public static Date cst2Date(String date) {
		try {
			return new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US).parse(date);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return null;
	}

	public static Long getBetweenDate(String date1, String date2) {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		try {
			Date d1 = format.parse(date1);
			Date d2 = format.parse(date2);
			//Date类中的getTime（）方法返回long型整数，即从GMT1970-01-01 00:00:00到该Date对象之间的时间差，毫秒为单位
			return (d1.getTime() - d2.getTime()) / 1000 / 60 / 60 / 24;
		} catch (ParseException e) {
			return 0L;
		}
	}

	public static Long getBetweenDate(Date date1, Date date2) {
		//Date类中的getTime（）方法返回long型整数，即从GMT1970-01-01 00:00:00到该Date对象之间的时间差，毫秒为单位
		return (date1.getTime() - date2.getTime()) / 1000 / 60 / 60 / 24;
	}
}
